/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package edu.pg.ipse.kb.frame.app;

import edu.pg.ipse.kb.frame.core.Constants;
import edu.pg.ipse.kb.frame.core.Context;
import edu.pg.ipse.kb.frame.core.DefaultFrameAccessObject;
import edu.pg.ipse.kb.frame.core.DefaultInferenceEngine;
import edu.pg.ipse.kb.frame.core.IFrameAccessObject;
import edu.pg.ipse.kb.frame.core.IInferenceEngine;
import edu.pg.ipse.kb.frame.core.ResultType;
import java.util.Scanner;

/**
 *
 */
public class Main {

    private static final Scanner consoleScanner = new Scanner(System.in);

    public static void main(String []args) {

        printOnScreen("\n--->Постановка задачи\n");
        printOnScreen("Задача: 'Суммирование элементов массива'\n");
        printOnScreen("Введите длину массива: ");
        final Integer arrayLength = consoleScanner.nextInt();
        printOnScreen("\n--->Используемый алгоритм суммирования\n");
        printOnScreen("'Модифицированная каскадная схема'\n\n");
        printOnScreen("--->Вычислительная среда\n");
        printOnScreen("Aрхитектура: 'SMP'\n");
        printOnScreen("Введите количество процессоров: ");
        final Integer processorsCount = consoleScanner.nextInt();

        // Init context
        Context context = Context.getInstance();
        context.setParameter(Constants.Parameters.ARRAY_LENGTH, arrayLength);
        context.setParameter(Constants.Parameters.PROCESSERS_COUNT, processorsCount);

        // Init FAO
        IFrameAccessObject fao = new DefaultFrameAccessObject();

        // Init Inference engine
        IInferenceEngine engine = new DefaultInferenceEngine(fao, context);
        
        ResultType result = (ResultType) engine.execute();
        printOnScreen("\n--->Результат\n");
        switch(result) {
            case YES:
                printOnScreen("Эффективно\n");
                break;
            case NO:
                printOnScreen("Не эффективно\n");
                break;
            case DO_NOT_KNOW:
                printOnScreen("Система не может дать ответа\n");
                break;
            default:
                break;
        }

        
    }

    public static void printOnScreen(String message) {
        System.out.print(message);
    }



}
